package yl.hs.bmipfull.controllers;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import yl.hs.bmipfull.utils.Log;
import yl.hs.bmipfull.utils.ResultCode;
import yl.hs.bmipfull.viewmodels.WebResult;

/**
 * @author 谢景广 <br/>
 * 控制器基类
 */

public class ControllerBase {
    protected Logger log = LoggerFactory.getLogger(Log.class);
    /***
     * 操作完成
     * @param message 提示信息
     * @return 响应结果
     */
    protected WebResult success(String message) {
        return new WebResult(ResultCode.SUCCESS, message, null);
    }

    /**
     * 操作完成并响应数据
     *
     * @param message 提示信息
     * @param data    提示信息
     * @return 响应结果
     */
    protected WebResult success(String message, Object data) {
        return new WebResult(ResultCode.SUCCESS, message, data);
    }
    /**
     * 操作完成并响应数据
     *
     * @param message 提示信息
     * @param data    提示信息
     * @return 响应结果
     */
    protected WebResult success(String message, Object data,String token) {
        return new WebResult(ResultCode.SUCCESS, message, data,token);
    }

    /**
     * 操作完成并响应数据
     *
     * @param message 提示信息
     * @param data    提示信息
     * @return 响应结果
     */
    protected WebResult success(String message, Object data, boolean isRefresh) {
        return new WebResult(ResultCode.SUCCESS, message, data, isRefresh);
    }
    /**
     * 操作完成并响应数据
     *
     * @param message 提示信息
     * @param data    提示信息
     * @return 响应结果
     */
    protected WebResult success(String message, Object data,Object token, boolean isRefresh) {
        return new WebResult(ResultCode.SUCCESS, message, data, token,isRefresh);
    }
    /**
     * 异常操作
     *
     * @param message 提示信息
     * @return 响应结果
     */
    protected WebResult error(String message) {
        return new WebResult(ResultCode.ERROR, message, null);
    }

    /**
     * 异常操作
     *
     * @param message 提示信息
     * @param data    异常数据
     * @return 响应结果
     */
    protected WebResult error(String message, Object data) {
        return new WebResult(ResultCode.ERROR, message, data);
    }

    /**
     * 异常操作
     *
     * @param ee 当前异常信息
     * @return 响应结果
     */
    protected WebResult error(Exception ee) {
        log.error("服务器错误",ee);
        ee.printStackTrace();
        return new WebResult(ResultCode.ERROR, ee.getMessage(), null);
    }
    /**
     * 异常操作
     *
     * @param ee 当前异常信息
     * @return 响应结果
     */
    protected WebResult error(Exception ee,Object data) {
        ee.printStackTrace();
        log.error("服务器错误",ee);
        return new WebResult(ResultCode.ERROR, ee.getMessage(), data);
    }

    /**
     * 操作失败
     *
     * @param message 提示信息
     * @return 响应结果
     */
    protected WebResult fail(String message) {
        return new WebResult(ResultCode.FAIL, message, null);
    }

    /**
     * 提示信息
     *
     * @param message 提示信息
     * @param data    失败数据
     * @return 响应结果
     */
    protected WebResult fail(String message, Object data) {
        return new WebResult(ResultCode.FAIL, message, data);
    }

    /***
     * 资源未找到
     * @param message 提示信息
     * @return 响应结果
     */
    protected WebResult notfound(String message) {
        return new WebResult(ResultCode.NOTFOUND, message, null);
    }

    /**
     * 资源未找到
     *
     * @param message 提示信息
     * @param data
     * @return 响应结果
     */
    protected WebResult notfound(String message, Object data) {
        return new WebResult(ResultCode.NOTFOUND, message, data);
    }


    /**
     * 未通过验证
     * @return 返回结果
     */
    protected WebResult unauthor() {
        return new WebResult(ResultCode.UNAUTHOR.code);
    }

}
